package com.tudouji.project.purchasebill.service;

import java.math.BigDecimal;
import java.util.List;

import com.flow.service.pojo.BasePojo;
import com.tudouji.framework.web.domain.AjaxResult;
import com.tudouji.project.bill.domain.Whinformitem;
import com.tudouji.project.purchasebill.domain.Purchasebill;

/**
 * 采购单Service接口
 * 
 * @author tudouji
 * @date 2022-04-11
 */
public interface IPurchasebillService 
{
    /**
     * 查询采购单
     * 
     * @param guid 采购单ID
     * @return 采购单
     */
    public Purchasebill selectPurchasebillById(Long guid);

    /**
     * 查询采购单列表
     * 
     * @param purchasebill 采购单
     * @param stats
     * @param functionType
     * @return 采购单集合
     */
    public List<Purchasebill> selectPurchasebillList(Purchasebill purchasebill, String stats, String functionType);
    public List<Purchasebill> listPC(Purchasebill purchasebill, String stats, String functionType);

    /**
     * 新增采购单
     * 
     * @param purchasebill 采购单
     * @return 结果
     */
    public int insertPurchasebill(Purchasebill purchasebill);

    /**
     * 修改采购单
     * 
     * @param purchasebill 采购单
     * @return 结果
     */
    public int updatePurchasebill(Purchasebill purchasebill);

    /**
     * 批量删除采购单
     * 
     * @param guids 需要删除的采购单ID
     * @return 结果
     */
    public int deletePurchasebillByIds(String[] guids);

    /**
     * 删除采购单信息
     * 
     * @param guid 采购单ID
     * @return 结果
     */
    public int deletePurchasebillById(Long guid);

    AjaxResult save(Purchasebill purchasebill, String fileIds);
    AjaxResult savePc(Purchasebill purchasebill);

    AjaxResult approval(Long id, String imgids, String opinion, Long taskid);
    AjaxResult startPc(Long id, String imgids);

    AjaxResult refuse(Long id, String fileIds, String opinion, Long taskid, Long refuseNodeid, Long backUserid);

    AjaxResult transferIn(Long id, List<Whinformitem> whinitems, String imgids, String opinion, Long taskid, BigDecimal exchangerate);

    AjaxResult whinBack(Long id, String imgids, String opinion, Long taskid);

    Purchasebill selectPurchasebillByCode(String code);

    AjaxResult del(Long id);
    AjaxResult delPc(Long id);
}
